package com.itheima.thread.utils.cyclicbarrier.demo01;

import java.util.concurrent.CyclicBarrier;

public class CyclicBarrierDemo01 {

    public static void main(String[] args) {

        // 1. 创建CyclicBarrier对象
        // public CyclicBarrier(int parties)： parties表示CyclicBarrier拦截的线程数
        // public CyclicBarrier(int parties, Runnable barrierAction)   // 用于在线程到达屏障时，优先执行barrierAction，方便处理更复杂的业务场景
        // CyclicBarrier cyclicBarrier = new CyclicBarrier(2) ;

        CyclicBarrier cyclicBarrier = new CyclicBarrier(2, new Runnable() {

            @Override
            public void run() {
                System.out.println("砰..................");
            }

        }) ;

        // 2. 创建两个线程类对象，然后把CyclicBarrier对象作为构造方法参数进行传递
        CyclicBarrierThread01 cyclicBarrierThread01  = new CyclicBarrierThread01(cyclicBarrier) ;
        CyclicBarrierThread02 cyclicBarrierThread02 = new CyclicBarrierThread02(cyclicBarrier) ;

        // 3. 启动线程
        cyclicBarrierThread01.start();
        cyclicBarrierThread02.start();

    }

}
